package com.banyiyi.simple.pattern.chainOR;

/**
 * @ClassName Handler
 * @Description 责任链模式的抽象执行类
 * @Author yangwm
 * @Date 2023/2/16 16:36
 * @Version 1.0
 */
public abstract class Handler {

    // 日志级别
    public static final int DEBUGGER = 1;
    public static final int INFO = 2;
    public static final int ERROR = 3;

    // 定义当前级别
    protected int level;

    // 下一级对象
    protected Handler next;

    // 构造器获取下一级对象
    public void setHandler(Handler handler){
        this.next = handler;
    }

    // 判断业务处理
    public void log(int level){
        // 判断当前层级能否处理
        if(this.level == level){
            // 处理
            patch();
        }else {
            // 转发下一级
            if(this.next != null){
                next.log(level);
            }else {
                System.out.println("没有对象处理此事件");
            }
        }
    }

    public abstract void patch();
}
